const { Readable } = require('stream')

let source = ['dora', 'mark', 'justin']

class MyReadable extends Readable {
  constructor(source) {
    super()
    this.source = source
  }
  _read() {
    let data = this.source.shift() || null // 读取完成后,手动传递 null => 无数据可用
    this.push(data)
  }
}

let myReadable = new MyReadable(source)
console.info('myReadable', myReadable)

// readable 事件: 当流中存在可读取数据时触发
// myReadable.on('readable', () => {
//   let data = null
//   while ((data = myReadable.read()) != null) {
//     console.info(data.toString())
//   }
// })

// data 事件: 当流中数据块传给消费者后触发
myReadable.on('data', (chunk) => {
  console.info(chunk.toString())
})
console.info('myReadable', myReadable)
